package com.zzc;

import org.springframework.ui.ModelMap;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.context.request.WebRequestInterceptor;

public class AllInterceptor implements WebRequestInterceptor {

    /**
     * 在请求处理之前运行，该方法主要是用于准备资源数据的，然后能够把它们当做请求属性放到WebRequest中
     */
    @Override
    public void preHandle(WebRequest request) throws Exception {
        // TODO Auto-generated method stub
        System.out.println("AllInterceptor...............................");
        request.setAttribute("request", "request", WebRequest.SCOPE_REQUEST);//这个是放到request范围内的，所以仅仅能在当前请求中的request中获取到
        request.setAttribute("session", "session", WebRequest.SCOPE_SESSION);//这个是放到session范围内的，假设环境同意的话它仅仅能在局部的隔离的会话中訪问。否则就是在普通的当前会话中能够訪问
        request.setAttribute("globalSession", "globalSession", WebRequest.SCOPE_GLOBAL_SESSION);//假设环境同意的话。它能在全局共享的会话中訪问。否则就是在普通的当前会话中訪问
    }

    /**
     * 该方法将在Controller运行之后，返回视图之前运行。ModelMap表示请求Controller处理之后返回的Model对象，所以能够在
     * 这种方法中改动ModelMap的属性，从而达到改变返回的模型的效果。
     */
    @Override
    public void postHandle(WebRequest request, ModelMap map) throws Exception {
        // TODO Auto-generated method stub
        for (String key:map.keySet())
            System.out.println(key + "-------------------------");;
        map.put("name3", "value3");
        map.put("name1", "name1");
    }

    /**
     * 该方法将在整个请求完毕之后，也就是说在视图渲染之后进行调用。主要用于进行一些资源的释放
     */
    @Override
    public void afterCompletion(WebRequest request, Exception exception)
            throws Exception {
        // TODO Auto-generated method stub
        System.out.println(exception + "-=-=--=--=-=-=-=-=-=-=-=-==-=--=-=-=-=");
    }

}
